home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 16 / Computer Interactive cdrom 16 - dic 98.iso / zdnetit / content / CLASSBLD.ZIP / Include / CB_UniqueValueTreeOwned.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-06  |  4.2 KB  |  126 lines

  1. #ifndef CB_UNIQUEVALUETREE_OWNED_H
  2. #define CB_UNIQUEVALUETREE_OWNED_H
  3.  
  4. #include "CB_UniqueValueTree.h"
  5.  
  6. // defines for include files
  7. #define RELATION_UNIQUEVALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  8. private:\
  9.     ClassTo* _first##NameTo;\
  10.     int _count##NameTo;\
  11. \
  12. protected:\
  13. \
  14. public:\
  15.     void Add##NameTo(ClassTo* item);\
  16.     void Remove##NameTo(ClassTo* item);\
  17.     void DeleteAll##NameTo();\
  18.     void Replace##NameTo(ClassTo* item, ClassTo* newItem);\
  19.     ClassTo* GetFirst##NameTo();\
  20.     ClassTo* GetLast##NameTo();\
  21.     ClassTo* GetNext##NameTo(ClassTo* pos);\
  22.     ClassTo* GetPrev##NameTo(ClassTo* pos);\
  23.     int Get##NameTo##Count();\
  24.     ITERATOR_MULTI_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  25.  
  26. #define RELATION_NOFILTER_UNIQUEVALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  27. private:\
  28.     ClassTo* _first##NameTo;\
  29.     int _count##NameTo;\
  30. \
  31. protected:\
  32. \
  33. public:\
  34.     void Add##NameTo(ClassTo* item);\
  35.     void Remove##NameTo(ClassTo* item);\
  36.     void DeleteAll##NameTo();\
  37.     void Replace##NameTo(ClassTo* item, ClassTo* newItem);\
  38.     ClassTo* GetFirst##NameTo();\
  39.     ClassTo* GetLast##NameTo();\
  40.     ClassTo* GetNext##NameTo(ClassTo* pos);\
  41.     ClassTo* GetPrev##NameTo(ClassTo* pos);\
  42.     int Get##NameTo##Count();\
  43.     ITERATOR_NOFILTER_MULTI_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  44.  
  45. #define RELATION_UNIQUEVALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  46.     RELATION_UNIQUEVALUETREE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  47.  
  48. // defines implementation
  49. #define INIT_UNIQUEVALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  50.    INIT_UNIQUEVALUETREE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  51.  
  52. #define EXIT_UNIQUEVALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  53.     { for (ClassTo* item = GetFirst##NameTo(); item; item = GetFirst##NameTo())\
  54.           delete item; }
  55.  
  56. #define REPLACE_UNIQUEVALUETREE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  57.     REPLACE_UNIQUEVALUETREE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  58.  
  59. #define INIT_UNIQUEVALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  60.     _ref##NameFrom = (ClassFrom*)0;\
  61.     _parent##NameFrom = (ClassTo*)0;\
  62.     _left##NameFrom = (ClassTo*)0;\
  63.     _right##NameFrom = (ClassTo*)0;\
  64.     assert(p##NameFrom);\
  65.     p##NameFrom->Add##NameTo(this);
  66.  
  67. #define EXIT_UNIQUEVALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  68.     EXIT_UNIQUEVALUETREE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  69.  
  70. #define REPLACE_UNIQUEVALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  71.     _ref##NameFrom = (ClassFrom*)0;\
  72.     _parent##NameFrom = (ClassTo*)0;\
  73.     _left##NameFrom = (ClassTo*)0;\
  74.     _right##NameFrom = (ClassTo*)0;\
  75.     pOld->_ref##NameFrom->Replace##NameTo(pOld, this);
  76.  
  77. #define METHODS_UNIQUEVALUETREE_OWNED_ACTIVE(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  78. void ClassFrom##::Add##NameTo(ClassTo* item)\
  79. {\
  80.     METHOD_UNIQUEVALUETREE_ADD(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  81. }\
  82. \
  83. void ClassFrom##::Remove##NameTo(ClassTo* item)\
  84. {\
  85.     METHOD_UNIQUEVALUETREE_REMOVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  86. }\
  87. \
  88. void ClassFrom##::DeleteAll##NameTo()\
  89. {\
  90.     METHOD_UNIQUEVALUETREE_DELETEALL(ClassFrom, NameFrom, ClassTo, NameTo) \
  91. }\
  92. \
  93. void ClassFrom##::Replace##NameTo(ClassTo* item, ClassTo* newItem)\
  94. {\
  95.     METHOD_UNIQUEVALUETREE_REPLACE(member, ClassFrom, NameFrom, ClassTo, NameTo) \
  96. }\
  97. \
  98. ClassTo* ClassFrom##::GetFirst##NameTo()\
  99. {\
  100.     METHOD_UNIQUEVALUETREE_GETFIRST(ClassFrom, NameFrom, ClassTo, NameTo) \
  101. }\
  102. \
  103. ClassTo* ClassFrom##::GetLast##NameTo()\
  104. {\
  105.     METHOD_UNIQUEVALUETREE_GETLAST(ClassFrom, NameFrom, ClassTo, NameTo) \
  106. }\
  107. \
  108. ClassTo* ClassFrom##::GetNext##NameTo(ClassTo* pos)\
  109. {\
  110.     METHOD_UNIQUEVALUETREE_GETNEXT(ClassFrom, NameFrom, ClassTo, NameTo) \
  111. }\
  112. \
  113. ClassTo* ClassFrom##::GetPrev##NameTo(ClassTo* pos)\
  114. {\
  115.     METHOD_UNIQUEVALUETREE_GETPREV(ClassFrom, NameFrom, ClassTo, NameTo) \
  116. }\
  117. \
  118. int ClassFrom##::Get##NameTo##Count()\
  119. {\
  120.     METHOD_UNIQUEVALUETREE_GETCOUNT(ClassFrom, NameFrom, ClassTo, NameTo) \
  121. }
  122.  
  123. #define METHODS_UNIQUEVALUETREE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  124.  
  125. #endif
  126.